package com.lakeworks.service;

import com.lakeworks.domain.SysFrame;
import com.lakeworks.domain.vo.FrameCreate;

import java.util.List;

/**
 * 格架信息Service接口
 *
 * @author lake
 * @date 2023-02-08
 */
public interface ISysFrameService {
    /**
     * 查询格架信息
     */
    SysFrame selectSysFrameById(Long id);

    /**
     * 根据搁架号查询
     */
    SysFrame selectByFrameNo(String frameNo);

    /**
     * 查询格架信息列表
     *
     * @param sysFrame 格架信息
     * @return 格架信息集合
     */
    List<SysFrame> selectSysFrameList(SysFrame sysFrame);

    /**
     * 新增格架信息
     *
     * @param sysFrame 格架信息
     * @return 结果
     */
    int insertSysFrame(SysFrame sysFrame);

    /**
     * 修改格架信息
     *
     * @param sysFrame 格架信息
     * @return 结果
     */
    int updateSysFrame(SysFrame sysFrame);

    /**
     * 批量删除格架信息
     *
     * @param ids 需要删除的格架信息主键集合
     * @return 结果
     */
    int deleteSysFrameByIds(String ids);

    /**
     * 删除格架信息信息
     *
     * @param id 格架信息主键
     * @return 结果
     */
    int deleteSysFrameById(Long id);

    /**
     * 格架初始化
     */
    void initFrame();

    /**
     * 分配格架
     *
     * @param isAtt 是否附件格架
     * @return
     */
    String allocateFrame(boolean isAtt);

    /**
     * 释放格架
     *
     * @param isAtt   是否附件格架
     * @param frameNo 格架号
     * @return
     */
    void releaseFrame(boolean isAtt, String frameNo);

    /**
     * 批量释放搁架
     * @param isAtt
     * @param frameNos
     */
    void batchRelease(boolean isAtt, List<String> frameNos);

    /**
     * 批量添加搁架号
     * @param frameCreate
     */
    void batchCreate(FrameCreate frameCreate);
}
